#ifndef __GPIO_H
#define __GPIO_H
#include "main.h"

/*
#define Debug_TX_PORT   		GPIOB
#define Debug_TX_PIN    		GPIO_PIN_12
#define Debug_TX_GPIO_HIGH		HAL_GPIO_WritePin(Debug_TX_PORT,Debug_TX_PIN,1)
#define Debug_TX_GPIO_LOW	  	HAL_GPIO_WritePin(Debug_TX_PORT,Debug_TX_PIN,0)
*/

#define LCD_CS_PORT   		    GPIOB
#define LCD_CS_PIN    		    GPIO_PIN_3
#define LCD_CS_HIGH				HAL_GPIO_WritePin(LCD_CS_PORT,LCD_CS_PIN,1)
#define LCD_CS_LOW	  			HAL_GPIO_WritePin(LCD_CS_PORT,LCD_CS_PIN,0)

#define LCD_RES_PORT   		    GPIOB
#define LCD_RES_PIN    		    GPIO_PIN_4
#define LCD_RES_HIGH			HAL_GPIO_WritePin(LCD_RES_PORT,LCD_RES_PIN,1)
#define LCD_RES_LOW	  			HAL_GPIO_WritePin(LCD_RES_PORT,LCD_RES_PIN,0)

#define LCD_A0_PORT   		    GPIOB
#define LCD_A0_PIN    		    GPIO_PIN_5
#define LCD_A0_HIGH			    HAL_GPIO_WritePin(LCD_A0_PORT,LCD_A0_PIN,1)
#define LCD_A0_LOW	  			HAL_GPIO_WritePin(LCD_A0_PORT,LCD_A0_PIN,0)

#define SDA_PORT   		      	GPIOB
#define SDA_PIN    		    	GPIO_PIN_7
#define SDA_HIGH			    HAL_GPIO_WritePin(SDA_PORT,SDA_PIN,1)
#define SDA_LOW	  				HAL_GPIO_WritePin(SDA_PORT,SDA_PIN,0)

#define	SDA_Status   			HAL_GPIO_ReadPin(SDA_PORT,SDA_PIN)	


#define SCL_PORT   		      	GPIOB
#define SCL_PIN    		    	GPIO_PIN_6
#define SCL_HIGH			    HAL_GPIO_WritePin(SCL_PORT,SCL_PIN,1)
#define SCL_LOW	  				HAL_GPIO_WritePin(SCL_PORT,SCL_PIN,0)



#define Led_Run_PORT   			GPIOB
#define Led_Run_PIN    			GPIO_PIN_13

#define Led_Alarm_PORT   		GPIOB
#define Led_Alarm_PIN    		GPIO_PIN_12

#define Led_Malfunction_PORT   	GPIOB
#define Led_Malfunction_PIN    	GPIO_PIN_11 

#define Led_MissPhase_PORT   	GPIOB
#define Led_MissPhase_PIN    	GPIO_PIN_10



#define	Led_Run_ON     			HAL_GPIO_WritePin(Led_Run_PORT,Led_Run_PIN,0)
#define	Led_Run_OFF     		HAL_GPIO_WritePin(Led_Run_PORT,Led_Run_PIN,1)
#define	Led_Run_Toggle			HAL_GPIO_TogglePin(Led_Run_PORT,Led_Run_PIN)

#define	Led_Alarm_ON    		HAL_GPIO_WritePin(Led_Alarm_PORT,Led_Alarm_PIN,0)
#define	Led_Alarm_OFF   		HAL_GPIO_WritePin(Led_Alarm_PORT,Led_Alarm_PIN,1)
#define	Led_Alarm_Toggle		HAL_GPIO_TogglePin(Led_Alarm_PORT,Led_Alarm_PIN)


#define	Led_Malfunction_ON    	HAL_GPIO_WritePin(Led_Malfunction_PORT,Led_Malfunction_PIN,0)
#define	Led_Malfunction_OFF   	HAL_GPIO_WritePin(Led_Malfunction_PORT,Led_Malfunction_PIN,1)
#define	Led_Malfunction_Toggle	HAL_GPIO_TogglePin(Led_Malfunction_PORT,Led_Malfunction_PIN)


#define	Led_MissPhase_ON    	HAL_GPIO_WritePin(Led_MissPhase_PORT,Led_MissPhase_PIN,0)
#define	Led_MissPhase_OFF   	HAL_GPIO_WritePin(Led_MissPhase_PORT,Led_MissPhase_PIN,1)
#define	Led_MissPhase_Toggle	HAL_GPIO_TogglePin(Led_MissPhase_PORT,Led_MissPhase_PIN)


#define Menu_Key_PORT   		GPIOA
#define Menu_Key_PIN    		GPIO_PIN_1
#define Menu_Key_Status		 	HAL_GPIO_ReadPin(Menu_Key_PORT,Menu_Key_PIN)

#define Move_Key_PORT   		GPIOA
#define Move_Key_PIN    		GPIO_PIN_2
#define Move_Key_Status		 	HAL_GPIO_ReadPin(Move_Key_PORT,Move_Key_PIN)

#define Selet_Key_PORT   		GPIOA
#define Selet_Key_PIN    		GPIO_PIN_3  
#define Selet_Key_Status		HAL_GPIO_ReadPin(Selet_Key_PORT,Selet_Key_PIN)

#define Menu_Key_Detct		1
#define Move_Key_Detct		2
#define Selet_Key_Detct		3


#define CollectBorad_PORT   			GPIOB
#define CollectBorad_PIN    			GPIO_PIN_15  



#define CollectBorad_ResetActive		do{ GPIO_InitTypeDef GPIO_InitStruct = {0};\
												GPIO_InitStruct.Pin 	= CollectBorad_PIN;\
												GPIO_InitStruct.Mode 	= GPIO_MODE_OUTPUT_PP;\
												GPIO_InitStruct.Pull 	= GPIO_NOPULL;\
												GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\
												HAL_GPIO_Init(CollectBorad_PORT, &GPIO_InitStruct);\
												HAL_GPIO_WritePin(CollectBorad_PORT,CollectBorad_PIN,0);\
										}while(0)
#define CollectBorad_ResetNotActive		do{ GPIO_InitTypeDef GPIO_InitStruct = {0};\
												GPIO_InitStruct.Pin 	= CollectBorad_PIN;\
												GPIO_InitStruct.Mode 	= GPIO_MODE_INPUT;\
												GPIO_InitStruct.Pull 	= GPIO_NOPULL;\
												GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\
												HAL_GPIO_Init(CollectBorad_PORT, &GPIO_InitStruct);\
										}while(0)	 
#define BK_PW_EN_PORT   				GPIOA
#define BK_PW_EN_PIN    				GPIO_PIN_11  
#define BK_PW_ENABLE					HAL_GPIO_WritePin(BK_PW_EN_PORT,BK_PW_EN_PIN,0)
#define BK_PW_DISABLE					HAL_GPIO_WritePin(BK_PW_EN_PORT,BK_PW_EN_PIN,1)




void  	ALLGPIO_Initial(void);

#endif

